$(function () {
    layui.config({
        base: 'static/layuiadmin/' //静态资源所在路径
    }).extend({
        index: 'lib/index'
    }).use(['index', 'table', 'form', 'laydate', 'modeutils', 'layer', 'selectM'], function () {
            var table = layui.table
            , form = layui.form
            , layer = layui.layer
            , laydate = layui.laydate
            , modeutils = layui.modeutils
            , selectM = layui.selectM
            , $ = layui.$;

            //设置选择样式
            var tmpobj = null;
            table.on('row', function (obj) {
                if (tmpobj != null) {
                    tmpobj.tr[0].style = 'background-color: #ffffff;';
                if (tmpobj.tr[1]) {
                    tmpobj.tr[1].style = 'background-color: #ffffff;';
                }
            }
            tmpobj = obj;
            obj.tr[0].style = 'background-color: #00801c61';
            if (obj.tr[1]) {
                    obj.tr[1].style = 'background-color: #00801c61';
                }
            });

            //加载table列表
            console.log("---开始加载角色列表");
            //实体列表信息
            table.render({
                elem: '#LAY-user-back-role'
                , id: 'LAY-user-back-role'
                , autoSort: false //禁用前端自动排序。
                // ,skin: 'nob' //行边框风格 line/row/nob
                , url: 'sysRole/list.do'
                , method: 'post'
                , cellMinWidth: 80 //全局定义常规单元格的最小宽度，layui 2.2.1 新增
                , height: 'full-100'  //高度自适应
                , width: 'full-100'
                , toolbar: '#entity-table-totalRow-toolbar'
                , title: '所有角色列表' //导出数据文件名称，需自定义
                , cols: [[
                    {type: 'checkbox'}  //开启复选框
                    , {field: 'roleStatus', title: '角色状态', width: 100, toolbar: '#buttonTpl', unresize: true}
                    , {field: 'roleId', width: 150, title: '角色ID', sort: true, hide: true}
                    , {field: 'roleName', width: 150, title: '角色名', sort: true}
                    , {field: 'roleDiscription', width: 150, title: '角色描述', sort: true}
                    , {
                        field: 'roleCreateDt', width: 180, title: '创建时间',
                        templet: function (d) {
                            return d.roleCreateDt ? formateDataG(d.roleCreateDt, 'yyyy-MM-dd hh:mm:ss') : "";
                        }
                    }
                    , {
                        title: '操作',
                        width: 160,
                        align: 'center',
                        fixed: 'right',
                        toolbar: '#table-useradmin-admin',
                        unresize: true
                    }
                ]]
                , initSort: {
                    field: 'roleId' //设置初始化排序字段
                    , type: 'a'  //设置初始化排序方式 desc/asc
                }
                , page: { //支持传入 laypage 组件的所有参数（某些参数除外，如：jump/elem） - 详见文档
                    layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'] //自定义分页布局
                    //,curr: 5 //设定初始在第 5 页
                    , groups: 5 //只显示 1 个连续页码
                    , first: false //不显示首页
                    , last: false //不显示尾页
                }
                , request: {
                    pageName: 'page' //页码的参数名称，默认：page
                    , limitName: 'limit' //每页数据量的参数名，默认：limit
                }
                , done: function (res, curr, count) {
                    //res 接口返回的数据;curr当前页码。返回的数据
                    if (res.success) {
                        layer.msg("加载成功", {icon: 1, time: 1000});
                    } else {
                        layer.msg("加载失败", {icon: 2, time: 1000});
                    }
                }
            });

            //时间格式化函数
            function formateDataG(time,format){
                var date = new Date(time);
                var year = (date.getYear() < 1900) ? date.getYear() + 1900 : date.getYear();
                var o = {
                    "M+" : date.getMonth() + 1, // month
                    "d+" : date.getDate(), // day
                    "h+" : date.getHours(), // hour
                    "m+" : date.getMinutes(), // minute
                    "ss" : date.getSeconds(), // second
                    "ms" : date.getMilliseconds()
                };

                if (/(y+)/.test(format)) {
                    format = format.replace(RegExp.$1, (year + "").substr(4
                        - RegExp.$1.length));
                }

                for (var k in o) {
                    if (new RegExp("(" + k + ")").test(format)) {
                        format = format.replace(RegExp.$1, RegExp.$1.length == 1
                            ? o[k]
                            : ("00" + o[k]).substr(("" + o[k]).length));
                    }
                }
                return format;
            }

            //回车查询事件
            $('#filtername').bind('keyup', function(event) {
                if (event.keyCode == "13") {
                    $('#LAY-reload-search-id').click();
                }
            });

            //监听搜索
            form.on('submit(LAY-reload-search)', function (data) {
                var field = data.field;
                //执行重载
                table.reload('entityTableInfo', {
                    where: field
                });
            });

            //重置
            $("#add-entity-info-btn-reset").on('click', function (obj) {
                form.val('form-search', {"filtername": "cancel-entity-info-btn"});
                table.reload('entityTableInfo', {
                    where: {"filtername": ""}
                });
            });

            //监听行双击事件，查看详情信息
            table.on('rowDouble(LAY-user-back-role)', function(obj){
                //post提交参数
                var postConfig = {
                    'url':'sysRole/data.do'
                    ,'data':{roleId:obj.data.roleId}
                };
                modeutils.open('layuiadmin-app-form-list',postConfig,{'filter':'layuiadmin-app-form-list'});
            });
            //监听提交修改
            form.on('submit(updata-entity-info-btn)',function (data) {
                if (data.field.roleStatus=='on'){
                    data.field.roleStatus=1;
                } else {
                    data.field.roleStatus=0;
                }
                $.ajax({
                    url:'sysRole/updataRole.do'
                    ,data:data.field
                    ,dataType:'json'
                    ,type:'post'
                    ,success: function (result) {
                        if (result.success) {
                            layer.alert('修改成功', {
                                icon: 1,
                                skin: 'layer-ext-moon'
                            });
                        } else {
                            layer.alert('修改失败,请联系管理员', {
                                icon: 2,
                                skin: 'layer-ext-moon'
                            });
                        }
                    }
                });
                table.reload('LAY-user-back-role',{
                    url:'sysRole/list.do',
                    where:{},
                });
            });


            //监听排序事件,使用服务端排序
            table.on('sort(entity-table-info)', function(obj) {
                table.reload('entityTableInfo', {
                    initSort: obj //记录初始排序，
                        , where: { //请求参数（
                            sort: obj.field.roleId //排序字段
                            , order: obj.type //排序方式
                    }
                });
            });

            //新增窗口设置属性
            var config = {
                type: 'add',
                title: '新增',
                skin: 'layui-layer-molv', //自定义窗口风格
                rSetID: '#add-entity-info-btn-reset', //重置按钮
                width: '60%',
                height: '60%'
            };

            //监听表头工具
            table.on('toolbar(entity-table-info)', function (obj) {
                var checkStatus = table.checkStatus(obj.config.id);
                var data = checkStatus.data;
                switch (obj.event) {
                    case 'add':
                        modeutils.openMode(config, 'entity-mode'); //打开新增窗口
                        break;
                    case 'batchDelete':
                        var ids = [];
                        for(n in data){
                            ids.push(data[n].roleId);
                        }
                        modeutils.delete("batchDelete",{ids : ids.join(',')},"api/sysRole/batchDelete"); //批量删除
                        break;
                }
            });

            //监听表格行内操作
            table.on('tool(entity-table-info)', function (obj) {
                var data = obj.data;
                var url = 'api/sysRole/data';
                switch (obj.event) {
                    case 'edit':
                        //post提交参数
                        var postConfig = {
                            'url':url
                            ,'data':{roleId:data.roleId}
                        };
                        //窗口参数
                        var modelConfig = {
                            title:'编辑'
                            ,type:'edit'
                            ,filter:'entity-Info'
                        };
                        modeutils.open('entity-mode',postConfig,modelConfig);
                        break;
                    case 'delete':
                        modeutils.delete("delete",{roleId:data.roleId},"api/sysRole/delete");
                        break;
                    case 'detail':
                        //post提交参数
                        var postConfig = {
                            'url':url
                            ,'data':{roleId:data.roleId}
                        };
                        modeutils.open('entity-mode-detail',postConfig,{'filter':'show-entity-Info'});
                        break;
                }
            });

            //监听表单提交
            form.on('submit(add-entity-info-btn)', function (data) {
                var url = "";
                if (data.field.roleId > 0) {
                    url = 'api/sysRole/update';
                } else {
                    url = 'api/sysRole/add';
                }
                modeutils.post({
                    url: url,
                    data: data.field,
                    success: function (res) {
                        if (res.success) {
                            layer.closeAll();
                            table.reload('entityTableInfo', {});
                        } else {
                            layer.msg(res.msg, {icon: 2});
                        }
                    },
                    error: function (err) {
                        layer.msg("请求错误，请重试", {icon: 2});
                    }
                });
                return false;
            });

            //创建时间
            laydate.render({
                elem: '#add-roleCreateDt-ID'
                ,type: 'datetime' //类型
                ,theme: '#009f95'  //主题 grid/molv
            });
            //详情-创建时间
            laydate.render({
                elem: '#show-roleCreateDt-ID'
                ,type: 'datetime' //类型
                ,theme: '#009f95'  //主题 grid/molv
            });
            //下拉列表
            function loadSelects(dicts) {
            }

          /*  //字典列表，列表中若需要多字典，中间用逗号","分隔
            var typenames = "";//"sys_SysDict_defaultvalue_val,sys_base_status_val";
            //加载字典数据后加载table
            loadDicts(typenames,loadTable);
            //加载字典数据后加载下拉框select
            loadDicts(typenames,loadSelects);*/
        })
    });


